package registnet.base;

import java.util.List;

/**
 * Defines an interface for course implementations.
 */
public interface ICourse {

	/**
	 * Returns the code for the course.
	 * @return the code for the course.
	 */
	public String getCourseCode();
	
	/**
	 * Sets the code for the course.
	 * @param courseCode
	 */
	public void setCourseCode(String courseCode);
	
	/**
	 * Returns the name of the course.
	 * @return the name of the course
	 */
	public String getCourseName();
	
	/**
	 * Sets the name of the course.
	 * @param courseName
	 */
	public void setCourseName(String courseName);
	
	/**
	 * Returns the list of the prerequisites of the course.
	 * @return the list of the prerequisites of the course.
	 */
	public List<Prerequisite> getPrerequisites();
	
	/**
	 * Adds a prerequisite to the list of the prerequisites of the course.
	 * @param prerequisite
	 */
	public void addPrerequisite(Prerequisite prerequisite);
	
	/**
	 * Returns the unit count of the course.
	 * @return the unit count of the course
	 */
	public int getUnit();
	
	/**
	 * Sets the unit count of the course.
	 * @param unit
	 */
	public void setUnit(int unit);
	
	/**
	 * Returns the year which the course is supposed to be taken in a particular curriculum.
	 * @return the year which the course is supposed to be taken in a particular curriculum
	 */
	public int getYear();
	
	/**
	 * Sets the year which the course is supposed to be taken in a particular curriculum.
	 * @param year
	 */
	public void setYear(int year);

	/**
	 * Returns the semester which the course is supposed to be taken in a particular curriculum.
	 * @return the semester which the course is supposed to be taken in a particular curriculum
	 */
	public int getSemester();
	
	/**
	 * Sets the semester which the course is supposed to be taken in a particular curriculum.
	 * @param semester
	 */
	public void setSemester(int semester);
	
	/**
	 * Returns the rank of the course.
	 * @return
	 */
	public int getRank();
	
	/**
	 * Sets the rank of the course.
	 * @param rank
	 */
	public void setRank(int rank);
	
}
